# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.s = ''
    # 返回对应char
    def FirstAppearingOnce(self):
        # write code here
        res = list(filter(lambda x:self.s.count(x)==1,self.s))
        return res[0] if res else '#'
    def Insert(self, char):
        # write code here
        self.s+=char

'''
offer
解法：
利用一个int型数组表示256个字符，这个数组初值置为-1.
每读出一个字符，将该字符的位置存入字符对应数组下标中。
若值为-1标识第一次读入，不为-1且>0表示不是第一次读入，将值改为-2.
之后在数组中找到>0的最小值，该数组下标对应的字符为所求。
在python中，ord(char)是得到char对应的ASCII码；chr(idx)是得到ASCII位idx的字符
输入：google 输出：ggg#ll
'''
# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.string = ''
        # 用一位数组，初始256个零来记录，下标直接对应ASCII码，哈希表不能初始所有的ASCII字母啊
        self.listCount = [0]*256
    # 返回对应char
    def FirstAppearingOnce(self):
        # write code here
        for ch in self.string:
            if self.listCount[ord(ch)] == 1:
                return ch
        return '#'
    def Insert(self, char):
        # write code here
        self.string += char
        self.listCount[ord(char)] += 1
listCount = [0]*256
print(listCount)

